#ifndef MOTORCOLISIONES_H
#define	MOTORCOLISIONES_H

#include <vector>
#include "Motor.h"
#include "MotorJuego.h"
#include <iostream>

using namespace std;
using namespace TP::Juego;
using namespace TP::Juego::Motorizacion::Colisiones;

namespace TP { namespace Juego { namespace Motorizacion { 

class MotorColisiones : public Motor {
    friend class MotorJuegoFactory;
public:

    MotorColisiones();

    virtual ~MotorColisiones();
    
    virtual Ticks notificacionAvanceTiempo (Ticks pTiempo);
    
    virtual Partida* correrPartida (Partida* pPartida, Ticks pTiempo);

protected:
    virtual vector<Partida*>& getPartidas();    

    void computarColisionesActorActor (Partida* pPartida);

    void computarColisionesActorUtilidad (Partida* pPartida);
    
    void sacarActoresMuertos (Partida* pPartida);
        
    void sacarUtilidadesMuertas(Partida* pPartida);
        
private:
    MotorJuego* motorJuego;
    vector<Partida*> _partidas;     
};   
}}}

#endif	/* MOTORCOLISIONES_H */